home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / include / bits / resource.h < prev    next >
C/C++ Source or Header  |  2008-09-29  |  7KB  |  234 lines

  1. /* Bit values & structures for resource limits.  Linux version.
  2.    Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2004, 2005
  3.    Free Software Foundation, Inc.
  4.    This file is part of the GNU C Library.
  5.  
  6.    The GNU C Library is free software; you can redistribute it and/or
  7.    modify it under the terms of the GNU Lesser General Public
  8.    License as published by the Free Software Foundation; either
  9.    version 2.1 of the License, or (at your option) any later version.
  10.  
  11.    The GNU C Library is distributed in the hope that it will be useful,
  12.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.    Lesser General Public License for more details.
  15.  
  16.    You should have received a copy of the GNU Lesser General Public
  17.    License along with the GNU C Library; if not, write to the Free
  18.    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  19.    02111-1307 USA.  */
  20.  
  21. #ifndef _SYS_RESOURCE_H
  22. # error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
  23. #endif
  24.  
  25. #include <bits/types.h>
  26.  
  27. /* Transmute defines to enumerations.  The macro re-definitions are
  28.    necessary because some programs want to test for operating system
  29.    features with #ifdef RUSAGE_SELF.  In ISO C the reflexive
  30.    definition is a no-op.  */
  31.  
  32. /* Kinds of resource limit.  */
  33. enum __rlimit_resource
  34. {
  35.   /* Per-process CPU limit, in seconds.  */
  36.   RLIMIT_CPU = 0,
  37. #define RLIMIT_CPU RLIMIT_CPU
  38.  
  39.   /* Largest file that can be created, in bytes.  */
  40.   RLIMIT_FSIZE = 1,
  41. #define    RLIMIT_FSIZE RLIMIT_FSIZE
  42.  
  43.   /* Maximum size of data segment, in bytes.  */
  44.   RLIMIT_DATA = 2,
  45. #define    RLIMIT_DATA RLIMIT_DATA
  46.  
  47.   /* Maximum size of stack segment, in bytes.  */
  48.   RLIMIT_STACK = 3,
  49. #define    RLIMIT_STACK RLIMIT_STACK
  50.  
  51.   /* Largest core file that can be created, in bytes.  */
  52.   RLIMIT_CORE = 4,
  53. #define    RLIMIT_CORE RLIMIT_CORE
  54.  
  55.   /* Largest resident set size, in bytes.
  56.      This affects swapping; processes that are exceeding their
  57.      resident set size will be more likely to have physical memory
  58.      taken from them.  */
  59.   __RLIMIT_RSS = 5,
  60. #define    RLIMIT_RSS __RLIMIT_RSS
  61.  
  62.   /* Number of open files.  */
  63.   RLIMIT_NOFILE = 7,
  64.   __RLIMIT_OFILE = RLIMIT_NOFILE, /* BSD name for same.  */
  65. #define RLIMIT_NOFILE RLIMIT_NOFILE
  66. #define RLIMIT_OFILE __RLIMIT_OFILE
  67.  
  68.   /* Address space limit.  */
  69.   RLIMIT_AS = 9,
  70. #define RLIMIT_AS RLIMIT_AS
  71.  
  72.   /* Number of processes.  */
  73.   __RLIMIT_NPROC = 6,
  74. #define RLIMIT_NPROC __RLIMIT_NPROC
  75.  
  76.   /* Locked-in-memory address space.  */
  77.   __RLIMIT_MEMLOCK = 8,
  78. #define RLIMIT_MEMLOCK __RLIMIT_MEMLOCK
  79.  
  80.   /* Maximum number of file locks.  */
  81.   __RLIMIT_LOCKS = 10,
  82. #define RLIMIT_LOCKS __RLIMIT_LOCKS
  83.  
  84.   /* Maximum number of pending signals.  */
  85.   __RLIMIT_SIGPENDING = 11,
  86. #define RLIMIT_SIGPENDING __RLIMIT_SIGPENDING
  87.  
  88.   /* Maximum bytes in POSIX message queues.  */
  89.   __RLIMIT_MSGQUEUE = 12,
  90. #define RLIMIT_MSGQUEUE __RLIMIT_MSGQUEUE
  91.  
  92.   /* Maximum nice priority allowed to raise to.
  93.      Nice levels 19 .. -20 correspond to 0 .. 39
  94.      values of this resource limit.  */
  95.   __RLIMIT_NICE = 13,
  96. #define RLIMIT_NICE __RLIMIT_NICE
  97.  
  98.   /* Maximum realtime priority allowed for non-priviledged
  99.      processes.  */
  100.   __RLIMIT_RTPRIO = 14,
  101. #define RLIMIT_RTPRIO __RLIMIT_RTPRIO
  102.  
  103.   __RLIMIT_NLIMITS = 15,
  104.   __RLIM_NLIMITS = __RLIMIT_NLIMITS
  105. #define RLIMIT_NLIMITS __RLIMIT_NLIMITS
  106. #define RLIM_NLIMITS __RLIM_NLIMITS
  107. };
  108.  
  109. /* Value to indicate that there is no limit.  */
  110. #ifndef __USE_FILE_OFFSET64
  111. # define RLIM_INFINITY ((unsigned long int)(~0UL))
  112. #else
  113. # define RLIM_INFINITY 0xffffffffffffffffuLL
  114. #endif
  115.  
  116. #ifdef __USE_LARGEFILE64
  117. # define RLIM64_INFINITY 0xffffffffffffffffuLL
  118. #endif
  119.  
  120. /* We can represent all limits.  */
  121. #define RLIM_SAVED_MAX    RLIM_INFINITY
  122. #define RLIM_SAVED_CUR    RLIM_INFINITY
  123.  
  124.  
  125. /* Type for resource quantity measurement.  */
  126. #ifndef __USE_FILE_OFFSET64
  127. typedef __rlim_t rlim_t;
  128. #else
  129. typedef __rlim64_t rlim_t;
  130. #endif
  131. #ifdef __USE_LARGEFILE64
  132. typedef __rlim64_t rlim64_t;
  133. #endif
  134.  
  135. struct rlimit
  136.   {
  137.     /* The current (soft) limit.  */
  138.     rlim_t rlim_cur;
  139.     /* The hard limit.  */
  140.     rlim_t rlim_max;
  141.   };
  142.  
  143. #ifdef __USE_LARGEFILE64
  144. struct rlimit64
  145.   {
  146.     /* The current (soft) limit.  */
  147.     rlim64_t rlim_cur;
  148.     /* The hard limit.  */
  149.     rlim64_t rlim_max;
  150.  };
  151. #endif
  152.  
  153. /* Whose usage statistics do you want?  */
  154. enum __rusage_who
  155. {
  156.   /* The calling process.  */
  157.   RUSAGE_SELF = 0,
  158. #define RUSAGE_SELF RUSAGE_SELF
  159.  
  160.   /* All of its terminated child processes.  */
  161.   RUSAGE_CHILDREN = -1,
  162. #define RUSAGE_CHILDREN RUSAGE_CHILDREN
  163.  
  164. #ifdef __USE_GNU
  165.   /* The calling thread.  */
  166.   RUSAGE_THREAD = 1
  167. # define RUSAGE_THREAD RUSAGE_THREAD
  168.   /* Name for the same functionality on Solaris.  */
  169. # define RUSAGE_LWP RUSAGE_THREAD
  170. #endif
  171. };
  172.  
  173. #define __need_timeval
  174. #include <bits/time.h>        /* For `struct timeval'.  */
  175.  
  176. /* Structure which says how much of each resource has been used.  */
  177. struct rusage
  178.   {
  179.     /* Total amount of user time used.  */
  180.     struct timeval ru_utime;
  181.     /* Total amount of system time used.  */
  182.     struct timeval ru_stime;
  183.     /* Maximum resident set size (in kilobytes).  */
  184.     long int ru_maxrss;
  185.     /* Amount of sharing of text segment memory
  186.        with other processes (kilobyte-seconds).  */
  187.     long int ru_ixrss;
  188.     /* Amount of data segment memory used (kilobyte-seconds).  */
  189.     long int ru_idrss;
  190.     /* Amount of stack memory used (kilobyte-seconds).  */
  191.     long int ru_isrss;
  192.     /* Number of soft page faults (i.e. those serviced by reclaiming
  193.        a page from the list of pages awaiting reallocation.  */
  194.     long int ru_minflt;
  195.     /* Number of hard page faults (i.e. those that required I/O).  */
  196.     long int ru_majflt;
  197.     /* Number of times a process was swapped out of physical memory.  */
  198.     long int ru_nswap;
  199.     /* Number of input operations via the file system.  Note: This
  200.        and `ru_oublock' do not include operations with the cache.  */
  201.     long int ru_inblock;
  202.     /* Number of output operations via the file system.  */
  203.     long int ru_oublock;
  204.     /* Number of IPC messages sent.  */
  205.     long int ru_msgsnd;
  206.     /* Number of IPC messages received.  */
  207.     long int ru_msgrcv;
  208.     /* Number of signals delivered.  */
  209.     long int ru_nsignals;
  210.     /* Number of voluntary context switches, i.e. because the process
  211.        gave up the process before it had to (usually to wait for some
  212.        resource to be available).  */
  213.     long int ru_nvcsw;
  214.     /* Number of involuntary context switches, i.e. a higher priority process
  215.        became runnable or the current process used up its time slice.  */
  216.     long int ru_nivcsw;
  217.   };
  218.  
  219. /* Priority limits.  */
  220. #define PRIO_MIN    -20    /* Minimum priority a process can have.  */
  221. #define PRIO_MAX    20    /* Maximum priority a process can have.  */
  222.  
  223. /* The type of the WHICH argument to `getpriority' and `setpriority',
  224.    indicating what flavor of entity the WHO argument specifies.  */
  225. enum __priority_which
  226. {
  227.   PRIO_PROCESS = 0,        /* WHO is a process ID.  */
  228. #define PRIO_PROCESS PRIO_PROCESS
  229.   PRIO_PGRP = 1,        /* WHO is a process group ID.  */
  230. #define PRIO_PGRP PRIO_PGRP
  231.   PRIO_USER = 2            /* WHO is a user ID.  */
  232. #define PRIO_USER PRIO_USER
  233. };
  234.